<?php
declare (strict_types = 1);

namespace app\model\admin;

use app\eslib\EsUtils;
use think\helper\Str;
use think\Model;

/**
 * @mixin \think\Model
 */
class EsxdmAuthAdminModel extends Model
{
    // 设置当前模型对应的完整数据表名称
    protected $table = 'esxdm_auth_admin';

    // 开启自动时间戳（默认为整型int）
    protected $autoWriteTimestamp = true;
    
    // 定义时间戳字段名
    protected $createTime = 'created_at';
    protected $updateTime = 'updated_at';
    

    /**
     * 返回 状态数据 访问器的值
     * @return string
     */
    public function getStatusDataAttr(): array
    {
        $data = [
            ['text' => '正常', 'value' => 1],
            ['text' => '禁用', 'value' => 0],
        ];
        return $data;
    }

    /**
     * 返回 状态 访问器的值
     * @return string
     */
    public function getStatusTextAttr()
    {
        $value = $this->getData('status');
        if (is_numeric($value)) {
            $value = intval($value);
        }
        $data = (array) $this->getStatusDataAttr();
        $result = array_filter($data, function ($v) use ($value) {
            return $v['value'] == $value;
        }, ARRAY_FILTER_USE_BOTH);
        return $result ? current($result)['text'] : $value;
    }

    /**
     * 返回 性别数据 访问器的值
     * @return string
     */
    public function getGenderDataAttr(): array
    {
        $data = [
            ['text' => '男', 'value' => 1],
            ['text' => '女', 'value' => 0],
        ];
        return $data;
    }

    /**
     * 返回 性别 访问器的值
     * @return string
     */
    public function getGenderTextAttr()
    {
        $value = $this->getData('gender');
        if (is_numeric($value)) {
            $value = intval($value);
        }
        $data = (array) $this->getGenderDataAttr();
        $result = array_filter($data, function ($v) use ($value) {
            return $v['value'] == $value;
        }, ARRAY_FILTER_USE_BOTH);
        return $result ? current($result)['text'] : $value;
    }

    /**
     * 使用视图查询
     */
    public function scopeDbView($query)
    {
        return $query->table('v_auth_admin');
    }

    /**
     * 复制记录
     */
    public static function copy($id)
    {
        $data = self::find($id)->toArray();
        $data['user_name'] .= ' - 副本';
        $data['salt'] = Str::random(8);
        $data['password'] = EsUtils::hashPassword('12345678', $data['salt']);
        unset($data['id']);
        unset($data['created_at']);
        unset($data['updated_at']);
        self::create($data);
        return 1;
    }
}
